71ed7bf8aec2960700dfaed7c81b9f7def76b7df
[project/luci.git] /
1 'use strict';
2 'require baseclass';
3 'require rpc';
4 'require uci';
5 'require form';
6
7 var callUSB = rpc.declare({
8 object: 'luci',
9 method: 'getUSBDevices',
10 expect: { 'ports': [] }
11 });
12
13 return baseclass.extend({
14 trigger: _('usbport (kernel)'),
15 kernel: true,
16 addFormOptions(s){
17 var o;
18
19 o = s.option(form.Value, 'port', _('USB Ports'));
20 o.depends('trigger', 'usbport');
21 o.rmempty = true;
22 o.modalonly = true;
23 o.load = function(s) {
24 return Promise.all([
25 callUSB()
26 ]).then(L.bind(function(usbport){
27 for (var i = 0; i < usbport[0].length; i++)
28 o.value(usbport[0][i].port, _('Port %s').format(usbport[0][i].port));
29 },this));
30 };
31 o.cfgvalue = function(section_id) {
32 var ports = [],
33 value = uci.get('system', section_id, 'port');
34
35 if (!Array.isArray(value))
36 value = String(value || '').split(/\s+/);
37
38 for (var i = 0; i < value.length; i++)
39 if (value[i].match(/^(\d+)-(\d+)$/))
40 ports.push('usb%d-port%d'.format(Regexp.$1, Regexp.$2));
41 else
42 ports.push(value[i]);
43
44 return ports;
45 };
46 }
47 });